Software capabilities have been integrated with remarkable regularity in a score of common, everyday user devices such as mobile phones and tablet computers. Not surprisingly, the increasing software capabilities of these devices have prompted an enormous demand for software applications. This growing demand for software applications has further sparked increased competition between developers. Consequently, developers often work tirelessly to create or further develop applications in order to meet current user demands.
When creating software applications, developers often focus on the functional capabilities of their product. However, functionality often comes at a price: functional capabilities can have a negative impact on the overall performance of a software application. Yet users generally have high performance expectations in addition to their specific functional requirements. Accordingly, developers typically struggle to increase the functionality of their products, while trying to avoid sacrificing overall performance.
Unfortunately, developers currently lack tools to accurately and efficiently monitor the performance of applications throughout their development cycle, which would otherwise allow developers to identify and rectify performance regressions at any stage. As a result, developers often identify performance regressions long after integrating the offending portions of code. This leaves developers with the onerous task of working backwards to track performance regressions. This can be difficult and extremely costly, particularly in larger software projects, where it can be nearly impossible to track the point or cause of a performance regression. This can lead to unnecessary performance regressions in software products, which developers often accept to avoid the cost and difficulty of searching for the point or cause of such regressions.